function imp=seisinv1(trin,t,znot,flow,fhigh,n)
% imp=seisinv1(trin,t,znot,flow,fhigh,n)
%
% SEISINV1 estimates acoustic impedence from a seismic trace
% using a Burg prediction filter to provide the low frequency
% component. 
%
% trin ... input seismic trace
% t ... time coordinate vector for trin
% znot ... first impedance value
% flow ... lowest frequency in trin to keep
% fhigh ... highest signal frequency in trin
% n ... number of points in Burg prediction filter
%
% NOTE: This SOFTWARE may be used by any individual or corporation for any purpose
% with the exception of re-selling or re-distributing the SOFTWARE.
% By using this software, you are agreeing to the terms detailed in this software's
% Matlab source file.

% BEGIN TERMS OF USE LICENSE
%
% This SOFTWARE is maintained by the CREWES Project at the Department
% of Geology and Geophysics of the University of Calgary, Calgary,
% Alberta, Canada.  The copyright and ownership is jointly held by
% its 'AUTHOR' (identified above) and the CREWES Project.  The CREWES
% project may be contacted via email at:  crewesinfo@crewes.org
%
% The term 'SOFTWARE' refers to the Matlab source code, translations to
% any other computer language, or object code
%
% Terms of use of this SOFTWARE
%
% 1) This SOFTWARE may be used by any individual or corporation for any purpose
%    with the exception of re-selling or re-distributing the SOFTWARE.
%
% 2) The AUTHOR and CREWES must be acknowledged in any resulting publications or
%    presentations
%
% 3) This SOFTWARE is provided "as is" with no warranty of any kind
%    either expressed or implied. CREWES makes no warranties or representation
%    as to its accuracy, completeness, or fitness for any purpose. CREWES
%    is under no obligation to provide support of any kind for this SOFTWARE.
%
% 4) CREWES periodically adds, changes, improves or updates this SOFTWARE without
%    notice. New versions will be made available at www.crewes.org .
%
% 5) Use this SOFTWARE at your own risk.
%
% END TERMS OF USE LICENSE
% check for row vector and transpose if needed
aa=size(trin);
bb=size(t);
if aa(1)==1
	trin=trin';
end
if bb(1)==1
	t=t';
end
%pad if needed
trpad=padpow2(trin);
tpad=xcoord(t(1),t(2)-t(1),trpad);
%compute spectrum
[Trin,f]=fftrl(trpad,tpad);
%predict the lows
Trout=predlowf(Trin,f,flow,fhigh,n);
%ifft and remove pad
rcs=ifftrl(Trout,f);
if(length(rcs)~=length(trin))
	rcs=rcs(1:length(trin));
end
%integrate
imp=rcs2imp(rcs,znot);